home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / util / misc / frodo.lha / src / 6581.asm < prev    next >
Assembly Source File  |  1995-01-16  |  2KB  |  102 lines

  1. *
  2. * 6581.asm - SID-Emulation
  3. *
  4. * Copyright (C) 1994-1995 by Christian Bauer
  5. *
  6.  
  7. *
  8. * Anmerkungen:
  9. * ------------
  10. *
  11. * Die SID-Emulation benötigt einen echten C64-SID, der im
  12. * Adreßraum $a00001-$a00039 (Register an den ungeraden Adressen)
  13. * eingeblendet ist (z.B. auf einer Zorro-II-Karte).
  14. *
  15. * Wegen Timing-Problemen mit der Karte werden Lesezugriffe
  16. * aus SID-Registern simuliert.
  17. *
  18. * Die Power-LED ist mit dem Reset-Eingang des SID verbunden,
  19. * d.h. ein kurzes Aus- und Einschalten der LED setzt den SID
  20. * zurück.
  21. *
  22.  
  23.         MACHINE    68020
  24.  
  25.         INCLUDE    "exec/types.i"
  26.         INCLUDE    "exec/macros.i"
  27.  
  28.         XREF    _GfxBase
  29.  
  30.         XDEF    Reset6581
  31.         XDEF    ReadFrom6581
  32.         XDEF    WriteTo6581
  33.         XDEF    UseSIDCard    ;Prefs
  34.  
  35.         SECTION    "CODE",CODE
  36.  
  37.  
  38. **
  39. ** SID zurücksetzen
  40. **
  41.  
  42. Reset6581    tst.w    UseSIDCard
  43.         beq    1$
  44.         move.l    a6,-(sp)
  45.         move.l    _GfxBase,a6
  46.         JSRLIB    WaitTOF
  47.         bset    #1,$bfe001    ;LED aus
  48.         JSRLIB    WaitTOF
  49.         bclr    #1,$bfe001    ;LED an
  50.         move.l    (sp)+,a6
  51. 1$        rts
  52.  
  53.  
  54. **
  55. ** Aus einem SID-Register lesen
  56. ** d0.w: Registernummer ($00-$1f)
  57. ** Rückgabe: d0.b: Byte
  58. **
  59. ** Darf das obere Wort von d0 und d1 nicht verändern!
  60. ** Darf a1 nicht verändern!
  61. **
  62.  
  63. ReadFrom6581    cmp.b    #$19,d0
  64.         beq    ReadFF
  65.         cmp.b    #$1a,d0
  66.         beq    ReadFF
  67.         cmp.b    #$1b,d0
  68.         beq    ReadRnd
  69.         moveq    #0,d0
  70.         rts
  71.  
  72. ReadFF        move.b    #-1,d0        ;A/D-Wandler
  73.         rts
  74.  
  75. ReadRnd        move.b    $dff007,d0    ;Zufallswert
  76.         rts
  77.  
  78.  
  79. **
  80. ** In ein SID-Register schreiben
  81. ** d0.w: Registernummer ($00-$1f)
  82. ** d1.b: Byte
  83. **
  84. ** Darf das obere Wort von d0 und d1 nicht verändern!
  85. **
  86.  
  87. WriteTo6581    tst.w    UseSIDCard(pc)
  88.         beq    1$
  89.         lea    $a00001,a0    ;SID-Karte
  90.         move.b    d1,(a0,d0.w*2)
  91. 1$        rts
  92.  
  93.  
  94. **
  95. ** Datenbereich
  96. **
  97.  
  98. ; Flag: SID-Karte ansprechen
  99. UseSIDCard    dc.w    0
  100.  
  101.         END
  102.